package com.tdam2011.grupo04;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Mensaje extends ListActivity{
	private TextView txt_conversacion;
		
	private MensajeAdapter adapter;
	
	private int thread_id;
	private String nombreContacto;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	    setContentView(R.layout.sms);

	    adapter= new MensajeAdapter();
	    getListView().setAdapter(adapter);
	 
	    txt_conversacion = (TextView)findViewById(R.id.txt_mensajeA);	        
	    txt_conversacion.setVisibility(TextView.GONE);
	    
	    Bundle extras = getIntent().getExtras();
	    if(extras !=null){
	    	thread_id= extras.getInt("thread_id", -1);
	    	nombreContacto= extras.getString("nombreContacto");
	    	cargarConversacion();
	    }
	}

	private void cargarConversacion(){
		String columns[] = new String[] { "_id", "person", "address", "body", "status", "thread_id", "date", "type"};
		String url = "content://sms/"; 
		Uri uri = Uri.parse(url);  
		String condicion = "thread_id = " + thread_id;
		
		Cursor cur = managedQuery(uri, 
		columns, // Which columns to return
		condicion, // WHERE clause; which rows to return(all rows)
		null, // WHERE clause selection arguments (none)
		null); // Order-by clause (ascending by name)

        txt_conversacion.setVisibility(TextView.VISIBLE);
        txt_conversacion.setText(txt_conversacion.getText() + nombreContacto);
		
		com.tdam2011.grupo04.entidades.Mensaje mensaje= null;
		while(cur.moveToNext()){
			mensaje= new com.tdam2011.grupo04.entidades.Mensaje();
			mensaje.setId(cur.getInt(0));
			mensaje.setThreadId(cur.getInt(5));
			mensaje.setFechaEnvio(cur.getLong(6));
			
			if(cur.getInt(cur.getColumnIndex("type")) == 2)
				mensaje.setNombreContacto("Yo");
			else
				mensaje.setNombreContacto(nombreContacto);
			
			mensaje.setTelefonoContacto(cur.getString(2));
			mensaje.setCuerpoMensaje(cur.getString(3));
			mensaje.setThreadId(cur.getInt(5));
			adapter.addMensaje(mensaje);
		}
		cur.close();
	
		adapter.notifyDataSetChanged();
	}
	
	
	class MensajeAdapter extends BaseAdapter{
		private ArrayList<com.tdam2011.grupo04.entidades.Mensaje> mensajes;
		private LayoutInflater inflater;
		
		public MensajeAdapter() {
			mensajes = new ArrayList<com.tdam2011.grupo04.entidades.Mensaje>();
			inflater = LayoutInflater.from(Mensaje.this);
		}

		public void addMensaje(com.tdam2011.grupo04.entidades.Mensaje mensaje) {
			if (mensaje != null) {
				this.mensajes.add(mensaje);
			}
		}
		
		public int getCount() {
			return mensajes.size();
		}
		
		public Object getItem(int position) {
			return mensajes.get(position);
		}

		public long getItemId(int position) {
			return position;
		}

		class Holder {
			private ImageView img_contacto;
			private TextView txt_nombreContacto;
			private TextView txt_fechaEnvio;
			private TextView txt_cuerpoMensaje;
		}

		public View getView(int position, View convertView, ViewGroup arg2){
			Holder holder;
			if (convertView == null) {
				convertView = inflater.inflate(R.layout.historiales_fila , null);
				holder = new Holder();
				holder.txt_nombreContacto = (TextView) convertView
						.findViewById(R.id.txt_nombreContacto);
				holder.txt_fechaEnvio = (TextView) convertView
						.findViewById(R.id.txt_fechaMensaje);
				holder.img_contacto = (ImageView) convertView
						.findViewById(R.id.img_contacto);
				holder.txt_cuerpoMensaje = (TextView) convertView
						.findViewById(R.id.txt_cuerpoMensaje);
				convertView.setTag(holder);
			} else {
				holder = (Holder) convertView.getTag();
			}

			com.tdam2011.grupo04.entidades.Mensaje mensaje = (com.tdam2011.grupo04.entidades.Mensaje) getItem(position);
			
			if(mensaje.getTieneFoto())
				holder.img_contacto.setImageURI(mensaje.getFoto());
			
			String fecha = millisToDate(mensaje.getFechaEnvio());
			
			holder.txt_nombreContacto.setText(String.valueOf(mensaje.getNombreContacto()));
			holder.txt_cuerpoMensaje.setText(mensaje.getCuerpoMensaje());
			holder.txt_fechaEnvio.setText(fecha);
			
			return convertView;
		}
	}
	
	public static String millisToDate(long currentTime) {
	    String finalDate;
	    Calendar calendar = Calendar.getInstance();
	    calendar.setTimeInMillis(currentTime);
	    Date date = calendar.getTime();
	    finalDate = date.toString();
	    return finalDate;
	}

	@Override 
	protected void onListItemClick(ListView l, View v, int position, long id) {
		com.tdam2011.grupo04.entidades.Mensaje msj= (com.tdam2011.grupo04.entidades.Mensaje)adapter.getItem(position);
		Intent intent= new Intent(Mensaje.this, com.tdam2011.grupo04.MostrarMensaje.class);
		intent.putExtra("mensaje", msj.getCuerpoMensaje());
		startActivity(intent);
	}
}
